In information technology, distributed systems are ubiquitous. Distributed systems consist of two or more modules, objects, programs, and/or subsystems that directly or indirectly communicate with each other. A distributed system may be resident on two or more machines or nodes, or it may be implemented on a single machine. The degree to which the sub-systems of a distributed system can communicate with each other varies from one distributed system to another. In many circumstances unfortunately, the degree and ease of communication between the parts of a distributed system is not extensive. This difficulty in communications is a virtual certainty in situations where one business organization's information system needs to communicate with another business organization's information system. Because of the diversity of information systems, operating systems, software packages, and data formats, linking up two information systems is often a very daunting task. Moreover, in the design of distributed systems, there is an inherent trade off between flexibility and performance. That is, distributed systems that can adapt to change gracefully often exhibit poor performance, while systems that exhibit high performance usually achieve that high performance at the expense of flexibility.
One method of communication between two information systems is through a “hardwiring” of the systems. In a hardwired set up, a part of each system is re-engineered to comply with a set of specifications that are agreed upon by the owners of the systems. These specifications may include data formats and encoding, communication protocols, communication networks, network addresses, and security measures. One perceived problem with a hardwired approach is its inflexibility. That is, its inability to easily adapt to changes in the information processing environment.
Another communication method between two information systems employs a middleware library. In this particular situation, the term middleware refers to a software library that the information system owners use to ease the task of re-engineering their information systems. In these cases, the middleware is used to address the interoperability issues of encoding, addressing, transport, and security. Examples of such middleware solutions include CORBA and the Web services protocol stack. While it is generally perceived that a middleware setup is more flexible than a hardwired approach, the performance of a middleware setup is not as good as that of a hardwired approach.
Yet still another method that has been used to gain interoperability between information systems is through the use of an intermediary. An intermediary information system, often operated by a third party, acts as a mediator between two information systems. It is generally perceived in the art that an intermediary approach is very flexible (since either information system can change its side without regard to the other (since the intermediary handles compatibility issues). However, it is further perceived in the industry that intermediary approaches lack performance, since most if not all communications must go through the intermediary, and be processed therein.